package com.yixun.qfbao.hander;

import com.yixun.qfbao.model.dto.PartnerInfoDto;
import com.yixun.qfbao.model.enums.SystemIdEnum;
import com.yixun.qfbao.service.PartnerInfoService;
import com.yixun.qfbao.util.RedisUtil;
import com.yixun.qfbao.utils.WeAppUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.alibaba.fastjson.JSONObject;
import com.yixun.qfbao.api.service.LoginService;
import com.yixun.qfbao.apidto.LoginReqDto;
import com.yixun.qfbao.apidto.LoginResDto;
import com.yixun.qfbao.constants.ApiConstant;
import com.yixun.qfbao.dto.base.BaseRequestDTO;
import com.yixun.qfbao.dto.base.BaseResponseDTO;
import com.yixun.qfbao.hander.base.CommonAbstractHander;
import com.yixun.qfbao.model.PartnerInfo;
import com.yixun.qfbao.utils.LoginUtils;
import com.yixun.qfbao.vo.LoginReqVo;

import java.util.concurrent.TimeUnit;

/**
 * 登录
 * 
 * @author Administrator
 * 		
 */
@Service("loginHander")
public class LoginHander extends CommonAbstractHander {

	private static final Logger logger = LoggerFactory.getLogger(LoginHander.class);
	
	@Autowired
	private LoginService loginService;
	
	@Autowired
	private LoginUtils loginUtils;
	
	@SuppressWarnings("rawtypes")
	@Override
	public BaseResponseDTO doBusiness(BaseRequestDTO reqDto) {
		LoginReqVo req = (LoginReqVo)reqDto;
		LoginReqDto reqDto1 = req.getParams();
		BaseResponseDTO<LoginResDto> res = new BaseResponseDTO<LoginResDto>();
		LoginResDto resDto = new LoginResDto();
		try {
			resDto = loginService.login(reqDto1);
			resDto.setLoginType(reqDto1.getLoginType());
			PartnerInfo pi = new PartnerInfo();
			BeanUtils.copyProperties(resDto, pi);
			loginUtils.putUser(pi);
			loginUtils.put(ApiConstant.DOMAIN + pi.getId(), reqDto1.getDomain());

		} catch (Exception e) {
			logger.error("登录异常: {}", e);
			resDto.setResult("-1");
			resDto.setResultMsg("账户错误,登录失败!");
		}
		res.setResData(resDto);
		res.setResult(resDto.getResult());
		return res;
	}
	
}
